---
title: Config Profiles
sidebar_label: Basics
---

import FragmentInfoPrintConfig from '../../fragments/tip-print-config.mdx';

DevSpace allows you to define different profiles for different use cases (e.g. working on different services in the same project, starting certain debugging environments) or for different deployment targets (e.g. dev, staging production).

Profiles allow you to define:
- [`replace`](../../configuration/profiles/replace.mdx) statements to override entire sections of the config 
- [`patches`](../../configuration/profiles/patches.mdx) to modify certain parts of the config.

:::note Combine Replace & Patches
It is possible to use the `replace` and `patches` together within one profile.
:::

:::tip Debug Profiles

<FragmentInfoPrintConfig/>

:::

A profile has to be configured in the `profiles` section of the `devspace.yaml`.
```yaml {15-25}
images:
  backend:
    image: john/devbackend
  backend-debugger:
    image: john/debugger
deployments:
- name: backend
  helm:
    componentChart: true
    values:
      containers:
      - image: john/devbackend
      - image: john/debugger
profiles:
- name: production
  patches:
  - op: replace
    path: images.backend.image
    value: john/prodbackend
  - op: remove
    path: deployments.name=backend.helm.values.containers[1]
  - op: add
    path: deployments.name=backend.helm.values.containers
    value:
      image: john/cache
```


## Useful Commands

### `devspace print -p [profile]`

<FragmentInfoPrintConfig/>

### `devspace list profiles`
To get a list of available profiles, you can run this command:
```bash
devspace list profiles
```

### `devspace use profile [profile]`
To permanently switch to a different profile, you can run this command:
```bash
devspace use profile [PROFILE_NAME]
```

:::note
Permanently switching to a profile means that all future commands (e.g. `devspace deploy` or `devspace dev`) will be executed using this profile until the user [resets the profile](#devspace-use-profile---reset) (see below).
:::

### `devspace use profile --reset`
To permanently switch back to the default configuration (no profile replaces and patches active), you can run this command:
```bash
devspace use profile --reset
```

### `devspace [deploy] -p [profile]`
Most DevSpace commands support the `-p / --profile` flag. Using this flag, you can run a single command with a different profile without switching your profile permenantly:
```bash
devspace build -p [PROFILE_NAME]
devspace deploy -p [PROFILE_NAME]
devspace dev -p [PROFILE_NAME]
devspace dev -i -p [PROFILE_NAME]
```
